﻿using System;
using System.IO;
using System.Web.UI;

namespace Common.Common
{
    /// summary 
    /// AspxToHtml 的摘要说明。 
    /// summary 
    public class AspxToHtml
    {
        /// summary 
        /// Aspx文件url 
        /// summary 
        public string strUrl;

        /// summary 
        /// 生成html文件的保存路径 
        /// /summary 
        public string strSavePath;

        /// summary 
        /// 生成html文件的文件名 
        /// summary 
        public string strSaveFile;

        public AspxToHtml()
        {
        }

        /// summary 
        /// 将strUrl放到strSavePath目录下,保存为strSaveFile 
        /// /summary 
        /// returns是否成功/returns 
        public bool ExecAspxToHtml()
        {
            try
            {
                StringWriter strHTML = new StringWriter();
                System.Web.UI.Page myPage = new Page(); //System.Web.UI.Page中有个Server对象,我们要利用一下它 
                myPage.Server.Execute(strUrl, strHTML);//将asp_net.aspx将在客户段显示的html内容读到了strHTML中 
                StreamWriter sw = new StreamWriter(strSavePath + strSaveFile, true, System.Text.Encoding.GetEncoding("GB2312"));
                //新建一个文件Test.htm,文件格式为GB2312 
                sw.Write(strHTML.ToString()); //将strHTML中的字符写到Test.htm中 
                strHTML.Close();//关闭StringWriter 
                sw.Close();//关闭StreamWriter 
                return true;
            }
            catch
            {
                return false;
            }
        }

        /// summary 
        /// 将Url放到Path目录下,保存为FileName 
        /// summary 
        /// param name="Url"aspx页面url/param 
        /// param name="Path"生成html文件的保存路径/param 
        /// param name="FileName"生成html文件的文件名/param 
        /// returns/returns 
        public bool ExecAspxToHtml(string Url, string Path, string FileName)
        {
            try
            {
                StringWriter strHTML = new StringWriter();
                System.Web.UI.Page myPage = new Page(); //System.Web.UI.Page中有个Server对象,我们要利用一下它 
                myPage.Server.Execute(Url, strHTML); //将asp_net.aspx将在客户段显示的html内容读到了strHTML中 
                StreamWriter sw = new StreamWriter(Path + FileName, true, System.Text.Encoding.GetEncoding("GB2312"));
                //新建一个文件Test.htm,文件格式为GB2312 
                sw.Write(strHTML.ToString()); //将strHTML中的字符写到Test.htm中 
                strHTML.Close();//关闭StringWriter 
                sw.Close();//关闭StreamWriter 
                return true;
            }
            catch
            {
                return false;
            }
        }
    }
}

